package uds.geoloc;

import java.util.ArrayList;
import java.util.HashMap;

import uds.data.HashMapRessources;
import uds.data.InformationRessource;
import uds.data.POI_Database;
import uds.data.POI_Entry;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

// InfoActivity est l'activité dans laquelle on trouve un résumé des POI présents dans un bâtiment précis
public class InfoActivity extends Activity {
	
	// Initialisation des variables nécessaires
	private String id;
	private Button bouton = null;	
	private ListView listeRessource ;
	private ArrayList<String> listeRessourcesBatiment ;
	
	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
	    setContentView(R.layout.info);
	    
	    // Ouverture de la base de données
		POI_Database base_poi = new POI_Database(this);
		base_poi.open();
	    
		// Initialisation des composants
	    TextView textNom = (TextView)findViewById(R.id.nomBatiment);
	    TextView textDescription = (TextView)findViewById(R.id.descriptionBatiment);
	    TextView textUrl = (TextView)findViewById(R.id.urlBatiment);
	    LinearLayout desciption = (LinearLayout)findViewById(R.id.infoDescription);
	    LinearLayout url = (LinearLayout)findViewById(R.id.infoUrl);
	    
	    listeRessource = (ListView) findViewById(R.id.listeRessource);
	    
	    bouton = (Button)findViewById(R.id.buttonPlan);
	    bouton.setOnClickListener(boutonListener);

		Bundle objetbunble  = this.getIntent().getExtras();
	    // Récupération des informations du bundle
	    if (objetbunble != null && objetbunble.containsKey("id")) {
	    	id = this.getIntent().getStringExtra("id");
	    }else {
	    	id = "Error";
	    }
	    
	    POI_Entry choix = base_poi.getPOI_EntryWithId(id); // Récupération du POI
	    
        listeRessourcesBatiment = new ArrayList<String>();
        
        ArrayList<HashMap<String,String>> sortie = new ArrayList<HashMap<String,String>>() ;
        
        // Récupération du HashMapRessources
        HashMap<String, InformationRessource> donnees ;
        HashMapRessources.initialisationHashMapRessources(this);
        donnees = HashMapRessources.getHashMap();
        
        HashMap<String,String> tmp = new HashMap<String,String>() ;
        
        ArrayList<POI_Entry> listeEnfantsBatiment = base_poi.getChildsPOI_Entry(id.toString());
	    int i = 0 ;
        for(POI_Entry entry : listeEnfantsBatiment ){
        	if(entry.getType()!="batiment" && entry.getType()!="batiment_entree" && entry.getType()!="acces_bus" &&
        			entry.getType()!="acces_tram" && entry.getType()!="campus" && entry.getType()!="parc" &&
        			entry.getType()!="parking_voitures"){
        		if(listeRessourcesBatiment.contains(entry.getType())){
        			
        		} else { // Récupération des types de POI contenus dans ce bâtiment
        			listeRessourcesBatiment.add(entry.getType());
        			tmp.put("imageRessource", String.valueOf(donnees.get(entry.getType()).getId_drawable()));
        			tmp.put("nomRessource",  donnees.get(entry.getType()).getDisplay_name());
        			sortie.add((HashMap<String, String>) tmp.clone());
        			i++;
        		}
        	}
        }
        // Implémentation du ListView
        SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), sortie, R.layout.listeressourcesitem,
            new String[] {"imageRessource", "nomRessource"}, new int[] {R.id.imageRessource, R.id.nomRessource});
        listeRessource.setAdapter(mSchedule);
        
        listeRessource.setOnItemClickListener(listeListener); // Implémentation du OnItemClickListener sur le ListView
         
        textNom.setText(choix.getName()); // Récupération du nom du bâtiment
        
	    if(choix.getDescription()==null){
	    	textDescription.setText(choix.getDescription()); // Récupération de la description du bâtiment
	    } else {
	    	desciption.setVisibility(8); // Ou faire disparaître la zone dédiée
	    }
	    if(choix.getUrl()==null){
	    	textUrl.setText(choix.getUrl()); // Récupération de l'url du bâtiment
	    } else {
	    	url.setVisibility(8); // Ou faire disparaître la zone dédiée
	    }
	    
	    base_poi.close();
	}
	
	// Implémentation du OnClickListener
	private OnClickListener boutonListener = new OnClickListener() 
    {
    	@Override
    	public void onClick(View v) 
    	{
    		Intent intent = new Intent(InfoActivity.this, PlanActivity.class);
    		Bundle extra = new Bundle();
    		
    		extra.putString("provenance", "Information"); // Spécification de la provenance
    		extra.putString("id", id); // Spécification de l'id du bâtiment choisi
    		intent.putExtras(extra);
    		
    		startActivity(intent);
    	}
    };
    
    // Implémentation du OnItemClickListener
    private OnItemClickListener listeListener = new OnItemClickListener() {
		
		@Override
     	public void onItemClick(AdapterView<?> a, View v, int position, long pos){
			
			Bundle extra = new Bundle();
			
			extra.putString("provenance", "Information2"); // Spécification de la provenance
			extra.putString("id", id); // Spécification de l'id du POI choisi
			extra.putString("type_ressource", listeRessourcesBatiment.get(position)); // Spécification du type de ressource choisi
			
    		Intent intent = new Intent(InfoActivity.this, PlanActivity.class);
    		
    		intent.putExtras(extra);
    		
    		startActivity(intent);
		}
	};
}
